package 继承.代码的执行顺序;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-18
 * Time: 11:22
 */
/*
【作业标题】
以下程序执行的结果是：
 */
class X {
    Y y = new Y();//1

    public X() {//2
        //super();
        System.out.print("X");
    }
}

class Y {
    public Y() {//3
        super();
        System.out.print("Y");
    }
}

public class Z extends X {
    Y y = new Y();//4

    public Z() {//5
        super();
        System.out.print("Z");
    }

    public static void main(String[] args) {
        new Z();
    }
}

/*
执行结果：
YXYZ
 */

/*
【作业内容】
A.ZYXX
B.ZYXY
C.YXYZ
D.XYZX
 */

/*
本题考察代码的执行顺序：
类Z继承类X。
在继承层次上，先执行父类和子类的静态的，再执行父类的实例，父类的构造，最后执行子类的实例和子类的构造。
根据以上顺序，我们得出结论：本题中没有静态的。所以先执行1和2，再执行4和5。执行注释1和注释4的时候，分班打印Y。故最终的结果是YXYZ。
故答案为：C
 */
